// 导入 http 模块
import http from 'wechat-http'
/**
 * 配置接口基础路径
 */
http.baseURL = 'https://live-api.itheima.net'

// 请求拦截器
http.intercept.request = (config) => {
  // config是请求相关的信息
  const token = getApp().token
  if (token && !config.url.includes('/refreshToken')) {
    // 如果没有header 加一个空对象
    config.header = config.header || {}
    // 将token添加到请求头
    config.header.Authorization = token
  }
  return config
}
// 响应拦截器
http.intercept.response = async (res) => {
  // 当接口返回状态码401 代表token失效
  if (res.statusCode === 401) {
    //如果调用的是刷新token接口 当refreshtoken失效 要跳转登录页 传页面历史栈
    if (res.config.url.includes('/refreshToken')) {
      const pageStack = getCurrentPages()
      const currentPage = pageStack[pageStack.length - 1]
      wx.redirectTo({
        url: `/pages/login/index?returnUrl=/${currentPage.route}`
      })
      console.log(res, 'res');
      return res.data
    }
    //token失效后,要调用刷新token接口
    const { code, data } = await wx.http({
      url: '/refreshToken',
      method: 'post',
      header: {
        Authorization: getApp().refreshtoken
      }
    })
    if (code !== 10000) return wx.utils.toast()
    //把最新的token存到本地
    getApp().setToken(data.token, data.refreshtoken)

    // 重新调用之前的401接口,拿到正确的数据返回
    const result = await wx.http({
      ...res.config
    })
    return result
  }

  // 解套
  // 剥离无用数据
  return res.data
}
/**
 * 挂载方法到全局
 */

wx.http = http
/**
 * 模块导出
 */
export default http